/********************************************************************
	TABAL ENGINE - 2012/11/12
	author:		Marc Cuscullola
	
	purpose:	Defines all the vertex types
*********************************************************************/
#pragma once

#ifndef __VERTEX_TYPE__INCLUDED_H__
#define __VERTEX_TYPE__INCLUDED_H__

#include "MathTypes.h"
#include <d3dx11.h>

#define VERTEX_TYPE_GEOMETRY	0x0001
#define VERTEX_TYPE_NORMAL		0x0002
#define VERTEX_TYPE_TANGENT		0x0004
#define VERTEX_TYPE_BINORMAL	0x0008
#define VERTEX_TYPE_TEXTURE1	0x0010
#define VERTEX_TYPE_TEXTURE2	0x0020
#define VERTEX_TYPE_DIFFUSE		0x0040

struct TGEOMETRY_VERTEX
{
	float x, y, z;

	static inline uint16 GetVertexType()
	{
		return VERTEX_TYPE_GEOMETRY;
	}
};

struct TCOLORED_VERTEX
{
	float x, y, z;
	uint32 color;

	static inline uint16 GetVertexType()
	{
		return VERTEX_TYPE_GEOMETRY | VERTEX_TYPE_DIFFUSE;
	}
};

struct TTEXTURED_VERTEX
{
	float x, y, z;
	float tu, tv;

	static inline uint16 GetVertexType()
	{
		return VERTEX_TYPE_GEOMETRY | VERTEX_TYPE_TEXTURE1;
	}
};

#endif //__VERTEX_TYPE__INCLUDED_H__